﻿<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>StringReplace</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="../css/commands.css" rel="stylesheet" type="text/css">
<link href="../css/print.css" rel="stylesheet" type="text/css" media="print">
</head>
<body>

<h1>StringReplace</h1>

<p>替换字符串中指定的子字符串为新的字符串。</p>

<p class="CommandSyntax">StringReplace, OutputVar, InputVar, SearchText [, ReplaceText, ReplaceAll?] </p>
<h3>参数 </h3>
<table border="1" width="100%" cellspacing="0" cellpadding="3" bordercolor="#C0C0C0">
  <tr>
    <td>OutputVar</td>
    <td>存储替换后的字符串的变量名。</td>
  </tr>
  <tr>
    <td>InputVar</td>
    <td>需要进行替换的字符串变量名。不要在变量名外加百分号，除非你想使用变量中的 <em>内容</em> 作为变量名。</td>
  </tr>
  <tr>
    <td>SearchText</td>
    <td>被替换的文本。不区分大小写，除非打开了 <a href="StringCaseSense.htm">StringCaseSense</a> 。</td>
  </tr>
  <tr> 
    <td width="15%">ReplaceText</td>
    <td width="85%">替换的文本。替换 <em>SearchText</em> 中的内容。如果省略或留空，<em>SearchText</em> 会被替换为空。也就是说，它在 <em>OutputVar</em> 中会被省略。</td>
  </tr>
  <tr> 
    <td>ReplaceAll?</td>
    <td><p>如果省略，只有第一个匹配 <em>SearchText</em> 的子字符串会被替换。如果这个参数是 1 、A 或者 All ，则所有匹配的子字符串都将被替换。</p>
    <p>使用单词 <strong>UseErrorLevel</strong> 的话可以在 ErrorLevel/错误级别 中存储被替换的子字符串的数量（如果没有任何子字符串被替换则是 0 ）。UseErrorLevel 包含了“All”的作用。</p>
    </td>
  </tr>
</table>

<h3>ErrorLevel</h3>
<p>当最后一个参数是 <em>UseErrorLevel</em> 的时候，<a href="../misc/ErrorLevel.htm">ErrorLevel/错误级别</a> 中会存储被替换的子字符串的数量（如果没有任何子字符串被替换则是 0 ）。否则，当 <em>InputVar</em> 中未包含 <em>SearchText</em> 的时候 ErrorLevel/错误级别 被设置为 1 ，包含的时候设置为 0 。</p>
<h3>注意</h3>
<p>在这个命令以及所有其它命令中，<em>OutputVar</em> 可以和 <em>InputVar</em> 相同。</p>
<p>内置变量 <a href="../Variables.htm">%A_Space%</a> 和 <a href="../Variables.htm">%A_Tab%</a> 包含了一个单独的空格和一个单独的制表符。当你需要单独搜索空格或制表符，或者在 <em>SearchText</em> 的开头或结尾使用空格或制表符的时候会非常有用。</p>
<p>在 v1.0.45 版本中，为了改进性能和内存利用，AllSlow 参数已过时。虽然仍然可以指定它，但是不会有任何效果。</p>
<h3>相关命令</h3>
<p><a href="RegExReplace.htm">RegExReplace()</a>, <a href="IfInString.htm">IfInString</a>, <a href="StringCaseSense.htm">StringCaseSense</a>, <a href="StringLeft.htm">StringLeft</a>, <a href="StringLeft.htm">StringRight</a>, <a href="StringMid.htm">StringMid</a>, <a href="StringTrimLeft.htm">StringTrimLeft</a>, <a href="StringTrimLeft.htm">StringTrimRight</a>, <a href="StringLen.htm">StringLen</a>, <a href="StringLower.htm">StringLower</a>, <a href="StringLower.htm">StringUpper</a>, <a href="StringGetPos.htm">StringGetPos</a>,  <a href="IfIs.htm">if var is type</a></p>
<h3>示例</h3>
<pre class="NoIndent"><em>; 在剪贴板中移除换行：</em>
StringReplace, clipboard, clipboard, `r`n, , All

<em>; 用加号替换所有空格：</em>
StringReplace, NewStr, OldStr, %A_SPACE%, +, All

<em>; 移除字符串中的所有空行：</em>
Loop
{
    StringReplace, MyString, MyString, `r`n`r`n, `r`n, UseErrorLevel
    if ErrorLevel = 0  <em>; 不需要再进行替换。</em>
        break
}</pre>

</body>
</html>